const cartModel = require('../../model/cart')
const goodModel = require('../../model/good')

class CartController {
    // 添加购物车 需要鉴权
    static async addToCart(ctx) {
        let { good_id, num } = ctx.request.body
        // 参数验证 谁买的 加入时携带token
        const u = ctx.user
        // 数据库插入操作
        const ele = {
            user_id: u._id,
            good_id,
            num: num || 1
        }
        const doc = await cartModel.findOne({ user_id: u._id, good_id, status: 1 })
        if (doc) {
            // 说明当前商品已经被用户添加过了，数量加1
            await cartModel.updateOne({ user_id: u._id, good_id }, { num: doc.num + num })
        } else {
            await cartModel.insertMany([ele])
        }
        ctx.body = { err: 0, msg: 'success', data: { info: ele } }
    }

    // 获取购物车列表
    static async getCartList(ctx) {
        const u = ctx.user
        let list = await cartModel.find({ status: 1, user_id: u._id })
        // model查询的数据不能直接修改
        let newlist = JSON.parse(JSON.stringify(list))
        for (let i = 0; i < newlist.length; i++) {
            newlist[i]['good_info'] = await goodModel.findOne({ _id: newlist[i].good_id })
        }
        ctx.body = { err: 0, msg: 'success', data: { list: newlist } }
    }


    // 删除购物车商品
    static async delCartItem(ctx) {
        let { cart_id } = ctx.request.query
        await cartModel.updateOne({ _id: cart_id }, { status: 0 })
        ctx.body = { err: 0, msg: 'success', data: {} }
    }


    // 更新商品数量
    static async updCartCount(ctx) {
        let { cart_id, new_num } = ctx.request.query
        await cartModel.updateOne({ _id: cart_id }, { num: new_num })
        ctx.body = { err: 0, msg: 'success', data: {} }
    }

    // 提交购物车信息
    static async submitCart(ctx) {
        let { ids } = ctx.request.body
        const arr = ids.split(';').filter(ele => ele)
        for (let i = 0; i < arr.length; i++) {
            await cartModel.updateOne({ _id: arr[i] }, { status: 0 })
        }
        // 生成一张订单
        ctx.body = { err: 0, msg: 'success', data: {} }
    }

}


module.exports = CartController